import java.util.Arrays;
/*
* leetcode 42 接雨水
* 
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，
计算按此排列的柱子，下雨之后能接多少雨水。

示例 1：
输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出：6
解释：上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。
示例 2：

输入：height = [4,2,0,3,2,5]
输出：9
* */
/*
* 思路：记录左右最高点，当lmax<rmax时，说明此时lmax就是左指针
* 的指向位置的最高盛水高度，拿其减左指针的的高度就为当前所指处最高存储高度
* 右边同理
* */
class Solution {
    public int trap(int[] height) {
        int l=0,r=height.length-1;
        int lmax=height[l],rmax=height[r],sum=0;
        while(l<r){
            if(lmax<rmax){
                sum+=lmax-height[l];
                l++;
                lmax=Math.max(lmax,height[l]);
            }else{
                sum+=rmax-height[r];
                r--;
                rmax=Math.max(rmax,height[r]);
            }
        }
        return sum;
    }
}